import Vue from "vue"
import axios from 'axios'
import qs from 'qs'
import {
	Message
} from 'element-ui'
//基准路径

var instance = axios.create({
	baseURL: "http://127.0.0.1:80"
})

//请求拦截
instance.interceptors.request.use(
	config => {
		let token = window.localStorage.getItem('token');
		console.log("每次请求前读取 Token=" + token)
		if (token) {
			config.headers.Authorization = "Bearer " + token;
		}
		return config;
	},
	error => {
		return Promise.reject(error);
	}
);

//响应拦截
instance.interceptors.response.use(
	//第一个参数是一个 匿名函数作为参数变量，正常响应 HTTP 状态码 200
	response => {
		console.log("正常响应 HTTP 状态码:" + response.status);
		return response;
	},
	//第二个参数是一个 匿名函数,出错了，非正常响应码
	error => {
		if (error.response) { //如果springboot没有启动，就没有这个
			switch (error.response.status) {
				case 401:
					Message.error("401无权限")
					break;
				case 403:
					Message.error("403无权限")
					break;
				default:
					Message.error(error.response.status + "系统在建设")
					break;
			}
		}
		return Promise.reject(error.response.data) //继续往下执行
	}

)

//提交 4 种方式 get  post KV  postFile  postJson
//get 封装，支持2种方式
//请求路径 url  /api/adm/clz/findAll?id=100   $get("/api/adm/clz/findAll?id=100")
//请求路径 url  /api/adm/clz/findAll   $get("/api/adm/clz/findAll",{id:100})

export let $get = (url, obj) => {
	return instance.get(url, {
		params: obj
	})
}

//post 键值对
//请求路径 url,obj是对象
//$postkv("/login",{username:'139001',password:'999'})

export let $postkv = (url, obj) => {
	let kv = qs.stringify(obj);
	return instance.post(url, kv)
}

//post 文件
export let $postf = (url, formData) => {
	console.log("postf=" + formData)
	return instance.post(
		url,
		formData, {
			headers: {
				'Content-Type': 'multipart/form-data'
			}
		})
}

//post Json 对象 或 数组

export let $postj = (url, obj) => {
	console.log("postj=" + obj)
	return instance.post(
		url,
		obj, {
			headers: {
				'Content-Type': 'application/json;charset=utf8'
			}
		}
	)
}